Laravel 中的又一个辅助函数 optional()
可以允许你访问给定对象的属性或者方法。如果给定的对象是 null
,属性或方法将会返回 null
代替返回 error
。
下面举例来看下。
// app/Models/User.php
class User extends Model
{
//...
public function account()
{
//...
}
//...
}
// user1 存在,account 对象也存在
$user1 = User::find(1);
$accountId = $user1->account->id; // 123
// user2 存在,但是 account 对象不存在
$user2 = User::find(2);
$accountId = $user2->account->id; //这时会报: PHP Error: Trying to get property of non-object
// 如果不用 optional(), 你可能会这么判断
$accountId = $user2->account ? $user2->account->id : null; // null
$accountId = $user2->account->id ?? null; // null
// 用 optional(),简单搞定,是不看起来很优雅呢
$accountId = optional($user2->account)->id; // null
当使用不可用的对象或调用不可用的Eloquent关系中的嵌套数据时,optional()
助手是理想选择。
不妨你也试试吧 ^_^
更多PHP知识,可前往 PHPCasts
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。